package cn.jingyuan.owl.model.error;

/**
 * 系统异常
 */
public class SystemException extends RuntimeException {

    /** 编码 */
    private String code;

    /** 编码消息 */
    private String codeMsg;

    /** 编码消息占位符参数 */
    private Object[] params;

    /**
     * @param code 编码
     * @param codeMsg 编码消息
     */
    public SystemException(String code, String codeMsg) {
        this(code, codeMsg, null, null, null);
    }

    /**
     * @param code 编码
     * @param codeMsg 编码消息
     * @param params 编码消息占位符参数
     */
    public SystemException(String code, String codeMsg, Object[] params) {
        this(code, codeMsg, params, null, null);
    }

    /**
     * @param code 编码
     * @param codeMsg 编码消息
     * @param detailMessage 异常详细信息 {@linkplain Throwable#getLocalizedMessage()}
     */
    public SystemException(String code, String codeMsg, String detailMessage) {
        this(code, codeMsg, null, detailMessage, null);
    }

    /**
     * @param code 编码
     * @param codeMsg 编码消息
     * @param params 编码消息占位符参数
     * @param detailMessage 异常详细信息 {@linkplain Throwable#getLocalizedMessage()}
     */
    public SystemException(String code, String codeMsg, Object[] params, String detailMessage) {
        this(code, codeMsg, params, detailMessage, null);
    }

    /**
     * @param code 编码
     * @param codeMsg 编码消息
     * @param params 编码消息占位符参数
     * @param detailMessage 异常详细信息 {@linkplain Throwable#getLocalizedMessage()}
     * @param cause 异常原因
     */
    public SystemException(String code, String codeMsg, Object[] params, String detailMessage, Throwable cause) {
        super(detailMessage, cause);
        this.code = code;
        this.codeMsg = codeMsg;
        this.params = params;
    }

    /**
     * 获取错误码
     */
    public String getCode() {
        return this.code;
    }

    /**
     * 获取编码消息
     */
    public String getCodeMsg() {
        return this.codeMsg;
    }

    /**
     * 获取编码消息占位符参数
     */
    public Object[] getParams() {
        return this.params;
    }

}
